package com.hina.rec.application.service.system;

import com.hina.rec.common.model.IdReq;
import com.hina.rec.endpoint.req.system.UserPageReq;
import com.hina.rec.endpoint.req.system.UserSaveReq;
import com.hina.rec.endpoint.req.system.UserSearchReq;
import com.hina.rec.endpoint.req.system.UserUpdateReq;
import com.hina.rec.endpoint.res.base.PageRes;
import com.hina.rec.endpoint.res.system.UserRes;

import java.util.List;

/**
 * 用户管理Service接口
 *
 * @author liaosp
 * @date 2024-01-10
 */
public interface UserService {

    /**
     * 创建用户
     *
     * @param req 用户创建请求
     * @return 是否创建成功
     */
    boolean save(UserSaveReq req);

    /**
     * 更新用户
     *
     * @param req 用户更新请求
     * @return 是否更新成功
     */
    boolean update(UserUpdateReq req);

    /**
     * 删除用户
     *
     * @param id 用户ID
     * @return 是否删除成功
     */
    boolean delete(Integer id);

    /**
     * 分页查询用户
     *
     * @param req 分页请求
     * @return 用户分页列表
     */
    PageRes<UserRes> page(UserPageReq req);

    /**
     * 搜索用户
     *
     * @param req 搜索请求
     * @return 用户列表
     */
    List<UserRes> search(UserSearchReq req);

    /**
     * 获取用户精简信息列表
     * 只包含被开启的用户，主要用于前端的下拉选项
     *
     * @return 用户精简信息列表
     */
    List<UserRes> simpleList();

    /**
     * 获取用户详情
     *
     * @param req 用户ID
     * @return 用户详情
     */
    UserRes detail(IdReq req);
}